# −*− coding: UTF−8 −*− 

import random

def additionsaufgabe(min=0, max=100):

    z1 = random.randint(min, max)
    z2 = random.randint(min, max)

    frage = "%s + %s = " % (z1, z2)
    ergebnis = "%s" % (z1 + z2)
    antwortsatz = frage + ergebnis

    return (frage, ergebnis, antwortsatz)

def multiplikationsaufgabe(min=3, max=12):

    z1 = random.randint(min, max)
    z2 = random.randint(min, max)

    frage = "%s * %s = " % (z1, z2)
    ergebnis = "%s" % (z1 * z2)
    antwortsatz = frage + ergebnis

    return (frage, ergebnis, antwortsatz)

aufgaben = {'a': additionsaufgabe,
            'm': multiplikationsaufgabe,
            }

def auswahl():
    eingabe = raw_input("\nAdditionsaufgabe [A] oder Multiplikationsaufgabe [m]? ")
    return aufgaben.get(eingabe, additionsaufgabe)

def trainer():
    fertig = False
    richtig = 0
    falsch = 0
    while not fertig:
        aufgabe = auswahl()
        frage, ergebnis, antwortsatz = aufgabe()
        antwort = raw_input("\n"+frage)
        if antwort == ergebnis:
            richtig += 1
            print "\nRichtig! ", antwortsatz
       
        else:
            falsch += 1
            print "\nLeider falsch! "
            nochmal = True
            while nochmal:
                neuerversuch = raw_input("\nNeuer Veruch? (J/n)")
                if neuerversuch.lower() == 'n':
                    while not fertig:
                        antwort = raw_input("\n"+frage)
                        if antwort == ergebnis:
                            richtig += 1
                            print "\nRichtig! ", antwortsatz
                   
                        else:
                            falsch += 1
                            print "\nLeider immer noch falsch! ", antwortsatz
                            nochmal = False
      
        nochmal = raw_input("\nNochmal? (J/n)")
        if nochmal.lower() == 'n':
            fertig = True
    
    endresultat = "\nDu hast %s Aufgaben richtig gelöst und %s Fehler gemacht." 
    print endresultat % (richtig, falsch)

if __name__ == "__main__":
    trainer()

